Reshape a Vector to a Tensor
This is an example of how to use the csdl.reshape() function to reshape a vector to a tensor.
from csdl_om import Simulatorfrom csdl import Modelimport csdlimport numpy as np
class ExampleVector2Tensor(Model):
def define(self): shape = (2, 3, 4, 5) size = 2 * 3 * 4 * 5
# Both vector or tensors need to be numpy arrays tensor = np.arange(size).reshape(shape) vector = np.arange(size)
# in2 is a vector having a size of 2 * 3 * 4 * 5 in2 = self.declare_variable('in2', val=vector)
# in2 is being reshaped from size = 2 * 3 * 4 * 5 to a tenßsor # having shape = (2, 3, 4, 5) self.register_output('reshape_vector2tensor', csdl.reshape(in2, new_shape=shape))
sim = Simulator(ExampleVector2Tensor())sim.run()
print('in2', sim['in2'].shape)print(sim['in2'])print('reshape_vector2tensor', sim['reshape_vector2tensor'].shape)print(sim['reshape_vector2tensor'])
[ 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119.]reshape_vector2tensor (2, 3, 4, 5)[[[[ 0. 1. 2. 3. 4.] [ 5. 6. 7. 8. 9.] [ 10. 11. 12. 13. 14.] [ 15. 16. 17. 18. 19.]]
[[ 20. 21. 22. 23. 24.] [ 25. 26. 27. 28. 29.] [ 30. 31. 32. 33. 34.] [ 35. 36. 37. 38. 39.]]
[[ 40. 41. 42. 43. 44.] [ 45. 46. 47. 48. 49.] [ 50. 51. 52. 53. 54.] [ 55. 56. 57. 58. 59.]]]
[[[ 60. 61. 62. 63. 64.] [ 65. 66. 67. 68. 69.] [ 70. 71. 72. 73. 74.] [ 75. 76. 77. 78. 79.]]
[[ 80. 81. 82. 83. 84.] [ 85. 86. 87. 88. 89.] [ 90. 91. 92. 93. 94.] [ 95. 96. 97. 98. 99.]]
[[100. 101. 102. 103. 104.] [105. 106. 107. 108. 109.] [110. 111. 112. 113. 114.] [115. 116. 117. 118. 119.]]]]